package com.elitel.frame.web.serverreqstat.service;

import com.elitel.frame.web.serverreqstat.dto.ServerReqStatDTO;
import com.elitel.frame.web.serverreqstat.entity.ServerAppStat;
import com.elitel.frame.web.serverreqstat.entity.ServerErrorStat;
import com.elitel.frame.web.serverreqstat.entity.ServerReqSimpleStat;
import com.elitel.frame.web.serverreqstat.entity.ServerReqStat;
import com.elitel.frame.web.sysreqlog.entity.SysReqDetail;
import com.github.pagehelper.PageInfo;

import java.text.ParseException;
import java.time.LocalDateTime;
import java.util.List;

/**
 * @author m
 */
public interface ServerReqStatService {

    /**
     * 获取服务请求统计信息
     *
     * @param dto
     * @return
     */
    ServerReqSimpleStat getServerReqSimpleStat(ServerReqStatDTO dto);

    /**
     * 获取服务错误统计信息
     *
     * @param dto
     * @return
     */
    ServerErrorStat getServerErrorStat(ServerReqStatDTO dto);

    /**
     * 获取服务调用方统计信息
     *
     * @param dto
     * @return
     */
    ServerAppStat getServerAppStat(ServerReqStatDTO dto);

    /**
     * 获取服务统计列表
     *
     * @param dto
     * @return
     */
    List<ServerReqStat> getServerStatList(ServerReqStatDTO dto);



    /**
     * 从缓存拉取日志到日志表
     */
    void pullSaveLog();

    /**
     * 统计日志到统计表
     */
    void statSaveLog();

    PageInfo<SysReqDetail> pageServerStatListInfo(String startDate, String endDate, Integer days, Integer page, Integer rows, String servName, Integer respStatus, Integer respTime, Integer isTimeOut) throws ParseException;

    int delDetailsByReqDate(LocalDateTime date);

    boolean changeSubStrFlag();
}
